home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (PO) / Nibble Volume 11, No. 08 (1990-08)(MindCraft Publishing)(Side A)[a].zip / Nibble Volume 11, No. 08 (1990-08)(MindCraft Publishing)(Side A)[a].po / IDENTIFIER.S < prev    next >
Text File  |  1996-12-24  |  3KB  |  134 lines

  1. **************************
  2. * IDENTIFIER Source Code *
  3. * by Jim Ferr            *
  4. * Copyright (c) 1990     *
  5. * MindCraft Publ. Corp.  *
  6. * Concord, MA 01742      *
  7. **************************
  8.  
  9. * Merlin PRO
  10.  
  11.           ORG $300       ;let's use page 3
  12. *
  13. XCE       EQU $FB        ;XCE opcode for 65C816
  14. ROMIN     EQU $C081      ;hardware switch to read ROM
  15. *
  16.           JSR GETID      ;get the ID
  17.           STA OURID      ;save it
  18.           RTS            ;and return to caller.
  19. *
  20. * Identify the system and return result in A
  21. *
  22. GETID     LDA ROMIN      ;read from ROM
  23. *
  24.           SEC            ;see if new or old machine
  25.           JSR $FE1F      ;old machines have RTS here.
  26.           BCS OLD        ;if carry still set, old.
  27.           BCC NEW        ;if carry clear, new.
  28. *
  29. OLD       LDA $FBB3
  30.           CMP #$38       ;old Apple II
  31.           BEQ A2
  32.           CMP #$EA       ;II Plus or Apple III
  33.           BEQ A2OR3
  34.           CMP #$06
  35.           BNE BAD        ;unknown
  36. *
  37.           LDA $FBC0
  38.           BEQ A2CFAM     ;IIc family
  39.           CMP #$EA
  40.           BEQ OLD2E      ;unenhanced IIe
  41.           CMP #$E0
  42.           BEQ NEW2E      ;enhanced IIe
  43.           BNE BAD        ;unknown
  44. *
  45. A2CFAM    LDA $FBBF      ;determine which IIc
  46.           BEQ A2C2       ;with 3.5 ROM
  47.           CMP #$FF
  48.           BEQ A2C1       ;original IIc
  49.           CMP #$03
  50.           BEQ A2C3       ;with org. mem. exp.
  51.           CMP #$04
  52.           BEQ A2C4       ;with rev. mem. exp.
  53.           CMP #$05
  54.           BEQ A2CPLUS    ;IIc Plus
  55.           BNE BAD        ;unknown
  56. *
  57. A2OR3     LDA $FB1E
  58.           CMP #$AD
  59.           BEQ A2PLUS     ;II Plus
  60.           CMP #$8A
  61.           BNE BAD        ;unknown if not
  62. *
  63.           LDA #3         ;Apple III
  64.           RTS
  65. *
  66. BAD       LDA #0         ;unknown machine
  67.           RTS
  68. *
  69. A2        LDA #1         ;original Apple II
  70.           RTS
  71. *
  72. A2PLUS    LDA #2         ;Apple II Plus
  73.           RTS
  74. *
  75. OLD2E     LDA #4         ;original IIe
  76.           RTS
  77. *
  78. NEW2E     LDA #5         ;enhanced IIe
  79.           RTS
  80. *
  81. A2C1      LDA #6         ;original Apple IIc
  82.           RTS
  83. A2C2      LDA #7         ;IIc w/ 3.5 ROM
  84.           RTS
  85. A2C3      LDA #8         ;IIc w/ org. mem exp.
  86.           RTS
  87. A2C4      LDA #9         ;IIc w/ rev. mem exp.
  88.           RTS
  89. *
  90. A2CPLUS   LDA #10        ;IIc Plus
  91.           RTS
  92. *
  93. NEW       CLC            ;get into 16 bit mode
  94.           DFB XCE
  95.           PHP            ;save processor status
  96.           DFB $C2
  97.           DFB $30        ;REP 30, sets 16 bit
  98.           JSR $FE1F      ;call ID routine again
  99.           STA NEWA       ;each stores 16 bits
  100.           STX NEWX
  101.           STY NEWY
  102.           PLP            ;restore 8 bit status
  103.           DFB XCE
  104. *
  105.           LDA NEWY+1     ;get Machine ID number
  106.           BNE NEWER      ;newer than IIgs
  107. *
  108.           LDA NEWY       ;ROM version number
  109.           BEQ GSROM00    ;ROM 00
  110.           CMP #$01
  111.           BEQ GSROM01    ;ROM 01
  112.           CMP #$03
  113.           BEQ GSROM03    ;ROM 03
  114.           BNE NEWGS      ;new GS
  115. *
  116. GSROM00   LDA #11
  117.           RTS
  118. GSROM01   LDA #12
  119.           RTS
  120. GSROM03   LDA #13
  121.           RTS
  122. NEWGS     LDA #14
  123.           RTS
  124. NEWER     LDA #15
  125.           RTS
  126. *
  127. * Storage
  128. *
  129. OURID     DFB $00        ;ID number result
  130. *
  131. NEWA      DW $0000       ;for 16-bit cpu info
  132. NEWX      DW $0000
  133. NEWY      DW $0000
  134.